import { exec } from 'child_process';
import * as fs from 'fs';

export function getImgBlob(imgPath: string): Promise<string> {
  return new Promise((resolve, reject) => {
    // 首先检查文件是否存在
    if (!fs.existsSync(imgPath)) {
      reject(new Error(`文件不存在: ${imgPath}`));
      return;
    }

    // 检查是否为文件（而不是目录）
    const stats = fs.statSync(imgPath);
    if (!stats.isFile()) {
      reject(new Error(`路径不是文件: ${imgPath}`));
      return;
    }

    exec(`php -r \"echo json_encode([urlencode(file_get_contents('${imgPath}'))]);\"`, (error, stdout, stderr) => {
      if (error) {
        reject(new Error(`执行 PHP 命令出错: ${error.message}`));
        return;
      }
      if (stderr) {
        reject(new Error(`PHP 命令 stderr: ${stderr}`));
        return;
      }
      
      try {
        // 验证输出是否为有效的JSON
        JSON.parse(stdout);
        resolve(stdout);
      } catch (parseError) {
        reject(new Error(`PHP 命令输出不是有效的JSON: ${stdout}`));
      }
    });
  });
}